package com.student.model;

import java.sql.Timestamp;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * GraduateInfo entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "Graduate_Info", schema = "dbo", catalog = "StudentManager")
public class GraduateInfo implements java.io.Serializable {

	// Fields

	private Long graduateId;
	private EmploymentSituation employmentSituation;
	private String graduateName;
	private Short sex;
	private String nationality;
	private Timestamp birthday;
	private String idNumber;
	private Short marriageStatus;
	private Double height;
	private Double weight;
	private String graduateSchool;
	private String educationDegree;
	private Timestamp graduateTime;
	private String selfIntroduction;
	private String graduatePhone;
	private String studentNumber;
	private Timestamp lastLoginTime;
	private String jobIntention;
	private Set<ReplyLetter> replyLetters = new HashSet<ReplyLetter>(0);
	private Set<ResumeSituation> resumeSituations = new HashSet<ResumeSituation>(
			0);
	private Set<EmploymentSituation> employmentSituations = new HashSet<EmploymentSituation>(
			0);
	private Set<FromLetter> fromLetters = new HashSet<FromLetter>(0);
	private Set<EmploymentRecord> employmentRecords = new HashSet<EmploymentRecord>(
			0);
	private Set<AuditionNotice> auditionNotices = new HashSet<AuditionNotice>(0);

	// Constructors

	/** default constructor */
	public GraduateInfo() {
	}

	/** minimal constructor */
	public GraduateInfo(Long graduateId) {
		this.graduateId = graduateId;
	}

	/** full constructor */
	public GraduateInfo(Long graduateId,
			EmploymentSituation employmentSituation, String graduateName,
			Short sex, String nationality, Timestamp birthday, String idNumber,
			Short marriageStatus, Double height, Double weight,
			String graduateSchool, String educationDegree,
			Timestamp graduateTime, String selfIntroduction,
			String graduatePhone, String studentNumber,
			Timestamp lastLoginTime, String jobIntention,
			Set<ReplyLetter> replyLetters,
			Set<ResumeSituation> resumeSituations,
			Set<EmploymentSituation> employmentSituations,
			Set<FromLetter> fromLetters,
			Set<EmploymentRecord> employmentRecords,
			Set<AuditionNotice> auditionNotices) {
		this.graduateId = graduateId;
		this.employmentSituation = employmentSituation;
		this.graduateName = graduateName;
		this.sex = sex;
		this.nationality = nationality;
		this.birthday = birthday;
		this.idNumber = idNumber;
		this.marriageStatus = marriageStatus;
		this.height = height;
		this.weight = weight;
		this.graduateSchool = graduateSchool;
		this.educationDegree = educationDegree;
		this.graduateTime = graduateTime;
		this.selfIntroduction = selfIntroduction;
		this.graduatePhone = graduatePhone;
		this.studentNumber = studentNumber;
		this.lastLoginTime = lastLoginTime;
		this.jobIntention = jobIntention;
		this.replyLetters = replyLetters;
		this.resumeSituations = resumeSituations;
		this.employmentSituations = employmentSituations;
		this.fromLetters = fromLetters;
		this.employmentRecords = employmentRecords;
		this.auditionNotices = auditionNotices;
	}

	// Property accessors
	@Id
	@Column(name = "Graduate_id", unique = true, nullable = false, precision = 18, scale = 0)
	@GeneratedValue
	public Long getGraduateId() {
		return this.graduateId;
	}

	public void setGraduateId(Long graduateId) {
		this.graduateId = graduateId;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "Employment_Situation")
	public EmploymentSituation getEmploymentSituation() {
		return this.employmentSituation;
	}

	public void setEmploymentSituation(EmploymentSituation employmentSituation) {
		this.employmentSituation = employmentSituation;
	}

	@Column(name = "Graduate_Name", length = 20)
	public String getGraduateName() {
		return this.graduateName;
	}

	public void setGraduateName(String graduateName) {
		this.graduateName = graduateName;
	}

	@Column(name = "Sex")
	public Short getSex() {
		return this.sex;
	}

	public void setSex(Short sex) {
		this.sex = sex;
	}

	@Column(name = "Nationality", length = 10)
	public String getNationality() {
		return this.nationality;
	}

	public void setNationality(String nationality) {
		this.nationality = nationality;
	}

	@Column(name = "Birthday", length = 23)
	public Timestamp getBirthday() {
		return this.birthday;
	}

	public void setBirthday(Timestamp birthday) {
		this.birthday = birthday;
	}

	@Column(name = "ID_Number", length = 20)
	public String getIdNumber() {
		return this.idNumber;
	}

	public void setIdNumber(String idNumber) {
		this.idNumber = idNumber;
	}

	@Column(name = "Marriage_Status")
	public Short getMarriageStatus() {
		return this.marriageStatus;
	}

	public void setMarriageStatus(Short marriageStatus) {
		this.marriageStatus = marriageStatus;
	}

	@Column(name = "Height", precision = 15, scale = 0)
	public Double getHeight() {
		return this.height;
	}

	public void setHeight(Double height) {
		this.height = height;
	}

	@Column(name = "Weight", precision = 15, scale = 0)
	public Double getWeight() {
		return this.weight;
	}

	public void setWeight(Double weight) {
		this.weight = weight;
	}

	@Column(name = "Graduate_School", length = 30)
	public String getGraduateSchool() {
		return this.graduateSchool;
	}

	public void setGraduateSchool(String graduateSchool) {
		this.graduateSchool = graduateSchool;
	}

	@Column(name = "Education_Degree", length = 200)
	public String getEducationDegree() {
		return this.educationDegree;
	}

	public void setEducationDegree(String educationDegree) {
		this.educationDegree = educationDegree;
	}

	@Column(name = "Graduate_Time", length = 23)
	public Timestamp getGraduateTime() {
		return this.graduateTime;
	}

	public void setGraduateTime(Timestamp graduateTime) {
		this.graduateTime = graduateTime;
	}

	@Column(name = "Self-Introduction")
	public String getSelfIntroduction() {
		return this.selfIntroduction;
	}

	public void setSelfIntroduction(String selfIntroduction) {
		this.selfIntroduction = selfIntroduction;
	}

	@Column(name = "Graduate_Phone", length = 30)
	public String getGraduatePhone() {
		return this.graduatePhone;
	}

	public void setGraduatePhone(String graduatePhone) {
		this.graduatePhone = graduatePhone;
	}

	@Column(name = "Student_Number", length = 32)
	public String getStudentNumber() {
		return this.studentNumber;
	}

	public void setStudentNumber(String studentNumber) {
		this.studentNumber = studentNumber;
	}

	@Column(name = "Last_Login_Time", length = 23)
	public Timestamp getLastLoginTime() {
		return this.lastLoginTime;
	}

	public void setLastLoginTime(Timestamp lastLoginTime) {
		this.lastLoginTime = lastLoginTime;
	}

	@Column(name = "Job_Intention")
	public String getJobIntention() {
		return this.jobIntention;
	}

	public void setJobIntention(String jobIntention) {
		this.jobIntention = jobIntention;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "graduateInfo")
	public Set<ReplyLetter> getReplyLetters() {
		return this.replyLetters;
	}

	public void setReplyLetters(Set<ReplyLetter> replyLetters) {
		this.replyLetters = replyLetters;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "graduateInfo")
	public Set<ResumeSituation> getResumeSituations() {
		return this.resumeSituations;
	}

	public void setResumeSituations(Set<ResumeSituation> resumeSituations) {
		this.resumeSituations = resumeSituations;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "graduateInfo")
	public Set<EmploymentSituation> getEmploymentSituations() {
		return this.employmentSituations;
	}

	public void setEmploymentSituations(
			Set<EmploymentSituation> employmentSituations) {
		this.employmentSituations = employmentSituations;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "graduateInfo")
	public Set<FromLetter> getFromLetters() {
		return this.fromLetters;
	}

	public void setFromLetters(Set<FromLetter> fromLetters) {
		this.fromLetters = fromLetters;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "graduateInfo")
	public Set<EmploymentRecord> getEmploymentRecords() {
		return this.employmentRecords;
	}

	public void setEmploymentRecords(Set<EmploymentRecord> employmentRecords) {
		this.employmentRecords = employmentRecords;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "graduateInfo")
	public Set<AuditionNotice> getAuditionNotices() {
		return this.auditionNotices;
	}

	public void setAuditionNotices(Set<AuditionNotice> auditionNotices) {
		this.auditionNotices = auditionNotices;
	}

}